1. Field
The present invention pertains to the field of modifications for software in embedded systems and, in particular to upgrading or downgrading software in an embedded system with low risk.
2. Related Art
Software-driven embedded systems can be found in a variety of devices, including peripherals such as printers, projectors and communications ports as well as in household and industrial appliances and high data rate communications networks. An embedded system typically has a processor, some permanent memory containing the software the drives the processor and the device, and some operational memory. During boot up, the processor executes the programs stored in the permanent memory and stores run-time data in the operational memory. From time to time, the programs in the permanent memory may need to be changed by upgrading or by rolling back to a previous version.
The programs stored in the permanent memory usually include a boot PROM, or start up code, kernels, and applications. Each of these elements is typically stored in a separate permanent memory partition. During an upgrade or rollback process, the software in each partition can be accessed independently of the software in other partitions.
Some embedded systems switch into a special service mode for upgrades. In this mode, the old software is removed and new software is stored in its place. During a downgrade process, the same operations are performed as in the upgrade. If the upgrade or downgrade is interrupted or if an error occurs during an upgrade or downgrade process then the device controlled by the embedded system may become unusable. Some devices can be repaired only by physically removing portions of the memory or accessing the memory independent of the rest of the system. This can be costly and time consuming.